package main

var i = 0

func Closure(name string) func() string {
	// 闭包 = 方法 + 上下文
	// name 变量
	// 方法本身 => return的这个
	return func() string {
		// i是方法定义之外的变量，在方法内部被引用了，这就是一个上下文
		i++
		// 方法中的局部变量不是上下文
		world := "world"
		return "hello, " + name + world
	}
}

func ClosureInvoke() {
	// c => 方法
	c := Closure("axzed")
	println(c())
}
